home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / emacs.lha / emacs-19.16 / src / keyboard.h < prev    next >
C/C++ Source or Header  |  1993-07-04  |  4KB  |  104 lines

  1. /* Declarations useful when processing input.
  2.    Copyright (C) 1985, 1986, 1987, 1993 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Total number of times read_char has returned.  */
  21. extern int num_input_chars;
  22.  
  23. /* Total number of times read_char has returned, outside of macros.  */
  24. extern int num_nonmacro_input_chars;
  25.  
  26. /* Nonzero means polling for input is temporarily suppressed.  */
  27. extern int poll_suppress_count;
  28.  
  29. /* Keymap mapping ASCII function key sequences onto their preferred forms.
  30.    Initialized by the terminal-specific lisp files.  */
  31. extern Lisp_Object Vfunction_key_map;
  32.  
  33. /* Vector holding the key sequence that invoked the current command.
  34.    It is reused for each command, and it may be longer than the current
  35.    sequence; this_command_key_count indicates how many elements
  36.    actually mean something.  */
  37. extern Lisp_Object this_command_keys;
  38. extern int this_command_key_count;
  39.  
  40. #ifdef MULTI_FRAME
  41. /* The frame in which the last input event occurred, or Qmacro if the
  42.    last event came from a macro.  We use this to determine when to
  43.    generate switch-frame events.  This may be cleared by functions
  44.    like Fselect_frame, to make sure that a switch-frame event is
  45.    generated by the next character.  */
  46. extern Lisp_Object internal_last_event_frame;
  47. #endif
  48.  
  49.  
  50. /* Macros for dealing with lispy events.  */
  51.  
  52. /* True iff EVENT has data fields describing it (i.e. a mouse click).  */
  53. #define EVENT_HAS_PARAMETERS(event) \
  54.   (XTYPE (event) == Lisp_Cons)
  55.  
  56. /* Extract the head from an event.
  57.    This works on composite and simple events.  */
  58. #define EVENT_HEAD(event) \
  59.   (EVENT_HAS_PARAMETERS (event) ? XCONS (event)->car : (event))
  60.  
  61. /* Extract the starting and ending positions from a composite event.  */
  62. #define EVENT_START(event) (XCONS (XCONS (event)->cdr)->car)
  63. #define EVENT_END(event) (XCONS (XCONS (XCONS (event)->cdr)->cdr)->car)
  64.  
  65. /* Extract the click count from a multi-click event.  */
  66. #define EVENT_CLICK_COUNT(event) (Fnth ((event), make_number (2)))
  67.  
  68. /* Extract the fields of a position.  */
  69. #define POSN_WINDOW(posn) (XCONS (posn)->car)
  70. #define POSN_BUFFER_POSN(posn) (XCONS (XCONS (posn)->cdr)->car)
  71. #define POSN_WINDOW_POSN(posn) (XCONS (XCONS (XCONS (posn)->cdr)->cdr)->car)
  72. #define POSN_TIMESTAMP(posn) \
  73.   (XCONS (XCONS (XCONS (XCONS (posn)->cdr)->cdr)->cdr)->car)
  74. #define POSN_SCROLLBAR_PART(posn)    (Fnth ((posn), make_number (4)))
  75.  
  76. /* Some of the event heads.  */
  77. extern Lisp_Object Qswitch_frame;
  78.  
  79. /* Properties on event heads.  */
  80. extern Lisp_Object Qevent_kind, Qevent_symbol_elements;
  81.  
  82. /* Getting an unmodified version of an event head.  */
  83. #define EVENT_HEAD_UNMODIFIED(event_head) \
  84.   (Fcar (Fget ((event_head), Qevent_symbol_elements)))
  85.  
  86. /* The values of Qevent_kind properties.  */
  87. extern Lisp_Object Qfunction_key, Qmouse_click, Qmouse_movement;
  88. extern Lisp_Object Qscroll_bar_movement;
  89.  
  90. /* Getting the kind of an event head.  */
  91. #define EVENT_HEAD_KIND(event_head) \
  92.   (Fget ((event_head), Qevent_kind))
  93.  
  94. /* Symbols to use for non-text mouse positions.  */
  95. extern Lisp_Object Qmode_line, Qvertical_line;
  96.  
  97. extern Lisp_Object get_keymap_1 ();
  98. extern Lisp_Object Fkeymapp ();
  99. extern Lisp_Object reorder_modifiers ();
  100. extern Lisp_Object read_char ();
  101. /* User-supplied string to translate input characters through.  */
  102. extern Lisp_Object Vkeyboard_translate_table;
  103.  
  104.